package com.haojiang.mh.remote.ui.frag

import android.graphics.drawable.Drawable
import android.view.View
import androidx.core.content.ContextCompat
import com.haojiang.mh.R
import com.haojiang.mh.remote.base.BaseFrag
import com.haojiang.mh.remote.enums.EArea
import com.haojiang.mh.remote.event.FunChangeEvent
import com.haojiang.mh.remote.utils.MenuUtil.massageMap
import kotlinx.android.synthetic.main.frag_massage_new.*
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode

class MassageNewFrag : BaseFrag() {

    private var shapeRectN: Drawable? = null
    private var shapeRectP: Drawable? = null
    private var shapeCirN: Drawable? = null
    private var shapeCirP: Drawable? = null
    private var modeList: ArrayList<View>? = null
    private var timerList: ArrayList<View>? = null
    private var waveList: ArrayList<View>? = null

    private var onModeClickLisenter = object : View.OnClickListener{
        override fun onClick(v: View?) {
            modeList?.run {
                modeList?.forEach {
                    it.background = shapeRectN
                    it.tag = 0
                }
                v?.let {
                    v.background = shapeRectP
                    v.tag = 1
                }
            }
        }
    }


    private var onTimerClickLisenter = object : View.OnClickListener{
        override fun onClick(v: View?) {
            timerList?.run {
                timerList?.forEach {
                    it.background = shapeRectN
                    it.tag = 0
                }
                v?.let {
                    v.background = shapeRectP
                    v.tag = 1
                }
            }
        }
    }

    private var onWaveClickLisenter = object : View.OnClickListener{
        override fun onClick(v: View?) {
            waveList?.run {
                waveList?.forEach {
                    it.background = shapeCirN
                    it.tag = 0
                }
                v?.let {
                    v.background = shapeCirP
                    it.tag = 1
                }
            }
        }
    }

    override fun onLayoutId(): Int {
        return R.layout.frag_massage_new
    }

    override fun initView() {
//        LogUtil.e("按摩器视图被加载")
        if(!EventBus.getDefault().isRegistered(this)) {
            EventBus.getDefault().register(this)
        }
//        return View.inflate(context, R.layout.frag_massage_new, null)
    }

    override fun initListener() {
        shapeRectN = ContextCompat.getDrawable(context!!, R.drawable.shape_rec_n)
        shapeRectP = ContextCompat.getDrawable(context!!, R.drawable.shape_rec_p)
        shapeCirN = ContextCompat.getDrawable(context!!, R.drawable.shape_circle_n)
        shapeCirP = ContextCompat.getDrawable(context!!, R.drawable.shape_circle_p)

        rtConstant.setOnClickListener(onModeClickLisenter)
        rtPulse.setOnClickListener(onModeClickLisenter)
        rtWave.setOnClickListener(onModeClickLisenter)
        modeList = ArrayList()
        modeList?.let {
            modeList!!.add(rtConstant)
            modeList!!.add(rtPulse)
            modeList!!.add(rtWave)
        }


        rt10Min.setOnClickListener(onTimerClickLisenter)
        rt20Min.setOnClickListener(onTimerClickLisenter)
        rt30Min.setOnClickListener(onTimerClickLisenter)
        timerList = ArrayList()
        timerList?.let {
            timerList!!.add(rt10Min)
            timerList!!.add(rt20Min)
            timerList!!.add(rt30Min)
        }

        rtWave0.setOnClickListener(onWaveClickLisenter)
        rtWave1.setOnClickListener(onWaveClickLisenter)
        rtWave2.setOnClickListener(onWaveClickLisenter)
        rtWave3.setOnClickListener(onWaveClickLisenter)
        waveList = ArrayList()
        waveList?.let {
            waveList!!.add(rtWave0)
            waveList!!.add(rtWave1)
            waveList!!.add(rtWave2)
            waveList!!.add(rtWave3)
        }

//        viewPager2.adapter = object : FragmentStateAdapter(this) {
//            override fun getItemCount() = 3
//
//            override fun createFragment(position: Int): Fragment {
//                return when (position) {
//                    0 -> FirstFragment()
//                    1 -> SecondFragment()
//                    2 -> ThirdFragment()
//                    else -> FirstFragment()
//                }
//            }
//        }

//        LogUtil.e("initListener按摩器")
//        rvMassage.layoutManager = LinearLayoutManager(context)
//        rvMassage.adapter = massageFragAdapter

//        if (massageMap.size > 0) {
//            massageFragAdapter.setData(massageMap)
//        }

//        showFunction()

    }


    override fun initData() {
        showFrag()
        showFunction()
//        LogUtil.e("initData按摩器")
    }

    override fun initDestroy() {
        EventBus.getDefault().unregister(this)
    }

    @Subscribe(threadMode = ThreadMode.MAIN)
    fun onFunctionEvent(event: FunChangeEvent) {
        when (event.fragCode) {
            EArea.NEW_MASSAGE.key -> {
//                ThreadUtils.ui {
//                LogUtil.e("新的按摩器界面")
                showFrag()
//                }
            }
        }
//        ThreadUtils.asyn {
//            if (massageMap.size > 0) {
//                LogUtil.e("按摩器进来了")
//                massageFragAdapter.setData(massageMap)
//                LogUtil.e("按摩器出去了")
//            }
//        }
    }

    @Synchronized
    private fun showFrag() {
        if (massageMap.size > 0) {
//            LogUtil.e("按摩器进来了")
//            massageFragAdapter.setData(massageMap)
//            LogUtil.e("按摩器出去了")
        }
    }

    private fun showFunction() {
        //        if(massageMap.size <= 0) {
//            massageMap.put(
//                Constant.ITEM_MSG_HEAD_FOOT_INTENSITY_INC,
//                mutableListOf<Cmd>(
//                    Cmd(
//                        CmdUtil.MASSAGE,
//                        CmdKey.MSG_HEAD_INTENSITY_INC
//                    ),
//                    Cmd(
//                        CmdUtil.MASSAGE,
//                        CmdKey.MSG_FOOT_INTENSITY_INC
//                    )
//                )
//            )
//        massageMap.put(
//            Constant.ITEM_MSG_HEAD_FOOT_INTENSITY_DEC,
//            mutableListOf<Cmd>(
//                Cmd(
//                    CmdUtil.MASSAGE,
//                    CmdKey.MSG_HEAD_INTENSITY_DEC
//                ),
//                Cmd(
//                    CmdUtil.MASSAGE,
//                    CmdKey.MSG_FOOT_INTENSITY_DEC
//                )
//            )
//        )
//
//        massageMap.put(
//            Constant.ITEM_MSG_HEAD_FOOT_BOTH_INTENSITY,
//            mutableListOf<Cmd>(
//                Cmd(
//                    CmdUtil.MASSAGE,
//                    CmdKey.MSG_HEAD_FOOT_BOTH_INTENSITY_INC
//                ),
//                Cmd(
//                    CmdUtil.MASSAGE,
//                    CmdKey.MSG_HEAD_FOOT_BOTH_INTENSITY_DEC
//                )
//            )
//        )

//        massageMap.put(
//            Constant.ITEM_MSG_HEAD_FOOT_SPEED,
//            mutableListOf<Cmd>(
//                Cmd(
//                    CmdUtil.MASSAGE,
//                    CmdKey.MSG_HEAD_FOOT_SPEED_INC
//                ),
//                Cmd(
//                    CmdUtil.MASSAGE,
//                    CmdKey.MSG_HEAD_FOOT_SPEED_DEC
//                )
//            )
//        )


//        massageMap.put(
//            Constant.ITEM_MSG_STYLE,
//            mutableListOf<Cmd>(
//                Cmd(
//                    CmdUtil.MASSAGE,
//                    CmdKey.MSG_PULSE
//                ),
//                Cmd(
//                    CmdUtil.MASSAGE,
//                    CmdKey.MSG_MODE
//                ),
//                Cmd(
//                    CmdUtil.MASSAGE,
//                    CmdKey.MSG_CONSTANT
//                )
//            )
//        )

//        massageMap.put(
//            Constant.ITEM_MSG_MODE,
//            mutableListOf<Cmd>(
//                Cmd(
//                    CmdUtil.MASSAGE,
//                    CmdKey.MSG_MODE1
//                ),
//                Cmd(
//                    CmdUtil.MASSAGE,
//                    CmdKey.MSG_MODE2
//                ),
//                Cmd(
//                    CmdUtil.MASSAGE,
//                    CmdKey.MSG_MODE3
//                )
//            )
//        )

//        motorMap.put(
//            ITEM_UBL_ON_OFF,
//            mutableListOf<Cmd>(
//                Cmd(
//                    CmdUtil.MOTOR,
//                    UBL_ON_OFF
//                )
//            )
//        )
//
//        motorMap.put(
//            ITEM_UBL_OFF,
//            mutableListOf<Cmd>(
//                Cmd(
//                    CmdUtil.MOTOR,
//                    UBL_OFF
//                )
//            )
//        )


//        massageMap.put(
//            Constant.ITEM_MSG_MIN,
//            mutableListOf<Cmd>(
//                Cmd(
//                    CmdUtil.MASSAGE,
//                    CmdKey.MSG_10MIN
//                ),
//                Cmd(
//                    CmdUtil.MASSAGE,
//                    CmdKey.MSG_20MIN
//                ),
//                Cmd(
//                    CmdUtil.MASSAGE,
//                    CmdKey.MSG_30MIN
//                )
//            )
//        )

//        massageMap.put(
//            Constant.ITEM_MSG_HEAD_FOOT_ON_OFF,
//            mutableListOf<Cmd>(
//                Cmd(
//                    CmdUtil.MASSAGE,
//                    CmdKey.MSG_HEAD_ON_OFF
//                ),
//                Cmd(
//                    CmdUtil.MASSAGE,
//                    CmdKey.MSG_FOOT_ON_OFF
//                )
//            )
//        )

//        massageMap.put(
//            Constant.ITEM_MSG_HEAD_FOOT_BOTH_ON,
//            mutableListOf<Cmd>(
//                Cmd(
//                    CmdUtil.MASSAGE,
//                    CmdKey.MSG_HEAD_FOOT_BOTH_ON
//                )
//            )
//        )

//        massageMap.put(
//            Constant.ITEM_MSG_HEAD_FOOT_BOTH_OFF,
//            mutableListOf<Cmd>(
//                Cmd(
//                    CmdUtil.MASSAGE,
//                    CmdKey.MSG_HEAD_FOOT_BOTH_OFF
//                )
//            )
//        )


//            massageFragAdapter.setData(massageMap)
//        }
    }

}
